package GUI;

import java.awt.Window;
import java.util.*;
import java.util.Map.*;
import javax.swing.*;
import X.*;
import X.Exception.MonopolyException;
import Befehle.*;
import GUI.NeuesSpiel.*;
import Monopoly.*;

/**
 * 
 * Die meisten Fenster werden von dieser Klasse aus augerufen
 * 
 * 
 * @author 
 *
 *@version $Revision: 0.0$
 *
 */
public class FensterFabrik {

	private static AbstractMap<Integer,Window> s_Windows = new WeakHashMap<Integer,Window>();
	private static int WindowSequence = 0;
	
	
	public static void CloseAllWindows(){	
		for(Entry<Integer,Window> item  : s_Windows.entrySet()){
			item.getValue().dispose();
		}
	}
	
	public static boolean Empty(){
		return  (s_Windows.size() > 0);
	}
	
	public static void ErzeugeFehlermeldung(MonopolyException ex){
		GUIFehlerMeldung dialog = new GUIFehlerMeldung(ex);
		ShowWindow(dialog);
	}
	
	public static void ErzeugeStart(){
		GUIStarter dialog = new GUIStarter();
		ShowWindow(dialog);
	}
	
	public static void ShowNewGameLoader(){
		NewGameLoader game = new NewGameLoader();
		ShowFrame(game);
	}
	
	public static void ShowMessageBox(String message,String buttontext, IBefehl aktion){
		GUIMessageBox window = new GUIMessageBox(message,buttontext,aktion);
		ShowWindow(window);
	}
	
	public static void ShowMessageBox(String message,String buttontext){
		ShowMessageBox(message, buttontext, new BefehlEmpty());
	}
		
	public static void ErzeugeSpieleHandelFenster(Spieler aktuellerSpieler, Roundel<Spieler> alleSpieler){

	}	
	
	private static void ShowFrame(JFrame value){
		value.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
		ShowWindow(value);
	}
	
	private static void ShowWindow(Window value){
		s_Windows.put(++WindowSequence, value);
		value.setVisible(true);
	}
}
